package io.bsly.modules.app.entity.localEntity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 用户订单
 * 
 * @author fys
 * @email demo@gmail.com
 * @date 2021-09-27 10:00:13
 */
@Data
@TableName("dy_order")
public class DyOrderEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 订单id
	 */
	@TableId(type = IdType.INPUT)
	private String id;
	/**
	 * 抖音核销码
	 */
	private String dyCouponCode;

	/**
	 * 抖音订单号
	 */
	private String dyOrderCode;

	/**
	 * 原数据库订单id
	 */
	private String rmtOrderId;

	/**
	 * canalsRoomId
	 */
	private Integer canalsRoomId;

	/**
	 * 品名id
	 */
	private Integer productId;

	/**
	 * 品名
	 */
	private String productName;

	/**
	 * 品名
	 */
	private String productCode;

	/**
	 * 用户Id
	 */
	private Integer userId;
	/**
	 * 下单用户
	 */
	private String username;
	/**
	 * 电话
	 */
	private String mobile;
	/**
	 * 
	 */
	private Integer hotelId;
	/**
	 * 
	 */
	private String hotelName;
	/**
	 * 物理房型id
	 */
	private Integer roomTypeId;
	/**
	 * 房型名称
	 */
	private String roomName;

	/**
	 * 价格
	 */
	private BigDecimal price;

	/**
	 * 含餐情况
	 */
	private String meal;
	/**
	 * 星级
	 */
	private Integer star;
	/**
	 * 入住日期
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private LocalDate inDate;
	/**
	 * 离店日期
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private LocalDate outDate;
	/**
	 * 夜数
	 */
	@NotNull(message = "nightCount不能为空")
	private Integer nightCount;
	/**
	 * 房间数
	 */
	@NotNull(message = "roomCount不能为空")
	private Integer roomCount;
	/**
	 * 创建时间
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date createTime;
	/**
	 * 确认时间（status ->2 已确认或4拒绝）
	 */
	private Date confirmTime;

	/**
	 * 拒绝理由
	 */
	private String refuseReason;

	/**
	 * 1.待确认 2 已确认 3已完成 4拒绝
	 */
	@TableField(value="`status`")
	private Integer status;

}
